package com.terrier.ui.events
{
    import flash.display.InteractiveObject;
    import flash.events.Event;
    import flash.events.MouseEvent;

    /**
     * 鼠标事件
     * @author Jarvis.weng
     */
    public class WxMouseEvent extends MouseEvent
    {
        /**
         * 定义 click_outside 事件对象的 type属性值
         * @default
         */
        public static const CLICK_OUTSIDE:String = "clickOutside";
        /**
         * 定义  double_click_outside 事件对象的 type属性值
         * @default
         */
        public static const DOUBLE_CLICK_OUTSIDE:String = "doubleClickOutside";
        /**
         * 定义  mouse_down_outside 事件对象的 type属性值
         * @default
         */
        public static const MOUSE_DOWN_OUTSIDE:String = "mouseDownOutside";
        /**
         * 定义  mouse_up_outside 事件对象的 type属性值
         * @default
         */
        public static const MOUSE_UP_OUTSIDE:String = "mouseUpOutside";
        /**
         * 定义  mouse_wheel_outside 事件对象的 type属性值
         * @default
         */
        public static const MOUSE_WHEEL_OUTSIDE:String = "mouseWheelOutside";

        /**
         * 构造函数 创建一个 WxMouseEvent对象，其中包含有关鼠标事件的信息。
         * @param type 事件的类型
         * @param bubbles 确定 Event 对象是否参与事件流的冒泡阶段。
         * @param cancelable 确定是否可以取消 Event 对象。
         * @param localX 事件发生点的相对于包含 Sprite 的水平坐标。
         * @param localY 事件发生点的相对于包含 Sprite 的垂直坐标。
         * @param relatedObject 受事件影响的补充 InteractiveObject 实例。 例如，发生 mouseOut 事件时，relatedObject 表示指针设备当前所指向的显示列表对象。
         * @param ctrlKey 在 Windows 或 Linux 中，指示是否已激活 Ctrl 键。在 Mac 中，指示是否已激活 Ctrl 键或 Command 键。
         * @param altKey 指示是否已激活 Alt 键（仅限 Windows 或 Linux）。
         * @param shiftKey 指示是否已激活 Shift 键。
         * @param buttonDown 指示是否按下了鼠标主按键。
         * @param delta 指示用户将鼠标滚轮每滚动一个单位应滚动多少行。 正 delta 值指示向上滚动；负值指示向下滚动。 通常所设的值为 1 到 3；值越大，滚动得越快。 此参数仅用于 MouseEvent.mouseWheel 事件。
         */
        public function WxMouseEvent(type:String,
                                     bubbles:Boolean = true,
                                     cancelable:Boolean = false,
                                     localX:Number = NaN,
                                     localY:Number = NaN,
                                     relatedObject:InteractiveObject = null,
                                     ctrlKey:Boolean = false,
                                     altKey:Boolean = false,
                                     shiftKey:Boolean = false,
                                     buttonDown:Boolean = false,
                                     delta:int = 0)
        {
            super(type, bubbles, cancelable,
                  localX, localY,
                  relatedObject,
                  ctrlKey, altKey, shiftKey,
                  buttonDown,
                  delta);
        }
		
		/**
		 * 
		 * @private
		 */
        override public function clone():Event
        {
            var e:WxMouseEvent = new WxMouseEvent(this.type, this.bubbles, this.cancelable,
                                                  this.localX, this.localY,
                                                  this.relatedObject,
                                                  this.ctrlKey, this.altKey, this.shiftKey,
                                                  this.buttonDown,
                                                  this.delta);
            return e;
        }
    }
}